<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // var list = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];

    // ES6 提供了新的数据结构 Set , 它类似于数组，但是成员的值都是唯一的，没有重复的值。

    // 如何创建Set数据结构 ??     通过构造函数创建 new Set();
    var s = new Set();
    console.log(s);

    // Set数据结构的属性和方法
    // 属性
    // size  => 返回Set结构成员的个数(有几个元素)

    // 方法:
    // add()  向set结构中添加一个成员(没有就新增, 有=>就跳过)  => 返回原Set数据结构(可以使用链式操作)
    // delete()   删除Set结构中的某个成员
    // clear()    清空Set结构中的所有成员
    // has()      判断set结构中是否存在某个成员
    // forEach(function(val,key){})  set结构遍历

    // 注意: set数据结构没有键名,只有键值 或者 键名键值都是通一个值


    // var res = s.add(1);
    // console.log("返回值:", res);
    // console.log("原set数据:", s);

    // 值类型
    s.add(1).add(2).add(3).add(1).add(2).add(3);

    // 引用类型  => 对应引用地址
    // s.add([1, 2, 3]).add([1, 2, 3]);  // 加两次(引用地址不一样)

    var arr = [1, 2, 3];
    var obj = { a: 1, b: 2 };
    s.add(arr).add(arr); //加一次 引用地址相同
    s.add(obj).add(obj);


    // has() 判断某个成员(元素) 是否存在
    // console.log(s.has(1));
    // console.log(s.has(2));
    // console.log(s.has(3));
    // console.log(s.has(arr));
    // console.log(s.has(obj));
    // console.log(s.has(4));

    // delete()  单删
    // console.log(s.delete(1));
    // console.log(s.delete(2));
    // console.log(s.delete(3));
    // console.log(s.delete(arr));
    // console.log(s.delete(obj));
    // console.log(s.delete(4));

    // clear() 清空
    // s.clear();

    console.log(s);


    // 遍历  => 遍历时 键名和键值返回都是键值
    s.forEach(function (val, key, set) {
        console.log(key, val);
    })






</script>

</html>